/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.asportoonline.entities;

import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

/**
 *
 * @author fe
 */
@Entity
public class Locale implements Serializable {

    private static final long serialVersionUID = 1L;
    /* CAMPI DI LOCALE */
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long idLocale;
    
    @Column(nullable = false)
    private String nome;
    
    @Column(nullable = false)
    private Indirizzo indirizzo;
    
    @Column(nullable = false)
    private String email;
    
    @Column(nullable = false)
    private String primaApertura;
    
    private String secondaApertura;
    
    @Column(nullable = false)
    private int distanzaMassima;
    
    @Column(nullable = false)
    private int giornoChiusura;
    
    @Column(nullable = false)
    private String piva;
    
    private String telefono;
    
    private String urlimmagine;
    
    @OneToMany(cascade = CascadeType.PERSIST, mappedBy = "locale")
    private List<Prodotto> prodotti;
    
    @ManyToOne
    @JoinColumn(nullable = false)
    private Cliente proprietario;
    
    @OneToMany(cascade = CascadeType.PERSIST, mappedBy = "locale")
    private List<Prenotazione> prenotazioni;

    /* COSTRUTTORI */
    public Locale() {
    }

    /* GETTER AND SETTER */
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public long getIdLocale() {
        return idLocale;
    }

    public void setIdLocale(long idLocale) {
        this.idLocale = idLocale;
    }

    public Indirizzo getIndirizzo() {
        return indirizzo;
    }

    public void setIndirizzo(Indirizzo indirizzo) {
        this.indirizzo = indirizzo;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getPrimaApertura() {
        return primaApertura;
    }

    public void setPrimaApertura(String primaApertura) {
        this.primaApertura = primaApertura;
    }

    public String getSecondaApertura() {
        return secondaApertura;
    }

    public void setSecondaApertura(String secondaApertura) {
        this.secondaApertura = secondaApertura;
    }

    public int getDistanzaMassima() {
        return distanzaMassima;
    }

    public void setDistanzaMassima(int distanzaMassima) {
        this.distanzaMassima = distanzaMassima;
    }

    public int getGiornoChiusura() {
        return giornoChiusura;
    }

    public void setGiornoChiusura(int giornoChiusura) {
        this.giornoChiusura = giornoChiusura;
    }

    public String getPiva() {
        return piva;
    }

    public void setPiva(String piva) {
        this.piva = piva;
    }

    public List<Prenotazione> getPrenotazioni() {
        return prenotazioni;
    }

    public void setPrenotazioni(List<Prenotazione> prenotazioni) {
        this.prenotazioni = prenotazioni;
    }

    public List<Prodotto> getProdotti() {
        return prodotti;
    }

    public void setProdotti(List<Prodotto> prodotti) {
        this.prodotti = prodotti;
    }

    public Cliente getProprietario() {
        return proprietario;
    }

    public void setProprietario(Cliente proprietario) {
        this.proprietario = proprietario;
    }

    public String getTelefono() {
        return telefono;
    }

    public void setTelefono(String telefono) {
        this.telefono = telefono;
    }

    public String getUrlimmagine() {
        return urlimmagine;
    }

    public void setUrlimmagine(String urlimmagine) {
        this.urlimmagine = urlimmagine;
    }

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    /* EQUALS AND HASHCODE */
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Locale other = (Locale) obj;
        if (this.idLocale != other.idLocale) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 59 * hash + (int) (this.idLocale ^ (this.idLocale >>> 32));
        return hash;
    }

    /* METODI TOSTRING */

    @Override
    public String toString() {
        return "Locale{" + "idLocale=" + idLocale + ", nome=" + nome + ", indirizzo=" + indirizzo + ", email=" + email + ", primaApertura=" + primaApertura + ", piva=" + piva + ", telefono=" + telefono + ", urlimmagine=" + urlimmagine + ", prodotti=" + prodotti + ", proprietario=" + proprietario + ", prenotazioni=" + prenotazioni + '}';
    }


}
